#include "led_drv.h"
#include "delay.h"

static void GpioInit(void)
{
    /* LED的GPIO时钟使能 */
    rcu_periph_clock_enable(LED_CLK);

    /* 配置LED1的GPIO */
    gpio_mode_set(LED1_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED1_PIN);
    gpio_output_options_set(LED1_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED1_PIN);
    gpio_bit_set(LED1_PORT, LED1_PIN);

    /* 配置LED2的GPIO */
    gpio_mode_set(LED2_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED2_PIN);
    gpio_output_options_set(LED2_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED2_PIN);
    gpio_bit_set(LED2_PORT, LED2_PIN);

    /* 配置LED3的GPIO */
    gpio_mode_set(LED3_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED3_PIN);
    gpio_output_options_set(LED3_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED3_PIN);
    gpio_bit_set(LED3_PORT, LED3_PIN);
}

void LedDrvInit(void)
{
    GpioInit();
}

void LedDrvSet(LedNumber_t ledNumber, ControlStatus state)
{
    FlagStatus ledState = (state != DISABLE) ? RESET : SET;

    switch (ledNumber)
    {
    case LED1:
        gpio_bit_write(LED1_PORT, LED1_PIN, ledState);
        break;
    case LED2:
        gpio_bit_write(LED2_PORT, LED2_PIN, ledState);
        break;
    case LED3:
        gpio_bit_write(LED3_PORT, LED3_PIN, ledState);
        break;
    default:
        break;
    }
}
